package cn.yinyu.queue.module.ecg.dal.dataobject.appointment;

import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.yinyu.queue.framework.mybatis.core.dataobject.BaseDO;

/**
 * 预约 DO
 *
 * @author 马剑波
 */
@TableName("appointment")
@KeySequence("appointment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppointmentDO extends BaseDO {

    /**
     * id
     */
    @TableId
    private Long id;

    /**
     * 申请编号
     */
    private String applyNo;
    /**
     * 就诊流水号
     */
    private String episodeId;
    /**
     * 患者来源类型  01问诊 02急诊 03体检 04住院
     */
    private Integer patSrc;
    /**
     * 患者编号
     */
    private String patId;
    /**
     * 患者姓名
     */
    private String patName;
    /**
     * 患者性别
     *
     * 枚举 {@link TODO system_user_sex 对应的类}
     */
    private Byte patGender;
    /**
     * 患者生日
     */
    private LocalDate patBirthday;
    /**
     * 患者手机
     */
    private String patMobile;
    /**
     * 患者电话
     */
    private String patPhone;
    /**
     * 身份证号
     */
    private String patIdentityId;
    /**
     * 患者地址
     */
    private String patAddr;
    /**
     * 患者所在科室代码
     */
    private String patDeptCode;
    /**
     * 患者所在科室名称
     */
    private String patDeptDesc;
    /**
     * 患者所在病区代码
     */
    private String patWardCode;
    /**
     * 患者所在病区名称
     */
    private String patWardDesc;
    /**
     * 床号
     */
    private String patBedNo;
    /**
     * 预约日期
     */
    private LocalDate bookDate;
    /**
     * 预约时间段
     */
    private Integer bookTimeslot;
    /**
     * 预约发生时间
     */
    private LocalDateTime bookTime;
    /**
     * 预约检查类型
     *
     */
    private Integer bookCheckType;
    /**
     * 预约来源：0 ~~ X系统、1 ~~ 护士手动预约
     */
    private Integer bookSrc;

    /**
     * 已付款
     */
    private Integer paid;

    /**
     * 从数据平台同步时间
     */
    private LocalDateTime syncTime;


    @TableField(exist = false)
    private Integer bookSeqNum;

}